package HashMap;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.function.BiConsumer;

public class demo1 {
    public static void main(String[] args) {
        HashMap<Student, String> m = new HashMap<>();
        Student s1 = new Student("张三", 18);
        Student s2 = new Student("李四", 20);
        Student s3 = new Student("王五", 19);
        m.put(s1, "湖北省");
        m.put(s2, "重庆");
        m.put(s3, "江苏省");
       /* //获取迭代器对象
        //迭代器对象好比是一个指针,默认指向集合的0索引处
        Iterator<Student> it = m.keySet().iterator();
        // 利用循环不断的去获取集合中的每一个元素
        while (it.hasNext()) {
            //next方法的二件事情:获取指针指向的元素并且移动指针
            Student key = it.next();//键
            String value = m.get(key);//值
            System.out.println(key + "\t" + value);
        }*/

       /* //增强for方法1
        //先获取所有键的对象
        Set<Student> keys = m.keySet();//遍历单列集合，得到每一个键;
        for (Student key : keys) {
                String value = m.get(key);//根据键去找值
         System.out.println(key + "\t" + value);
        }*/
        /*//增强for方法2
        for (Map.Entry<Student, String> entry : m.entrySet()) {//获取所有键值对对象的集合
            //遍历键值对对象的集合，得到每一个键值对对象--entry
            Student key = entry.getKey();//利用entry对象去获取键
            String value = entry.getValue();//利用entry对象去获取值
            System.out.println(key + "\t" + value);
        }*/

        m.forEach((Student kep, String value) -> System.out.println(kep + "\t" + value));

    }
}
